﻿using Furion.Authorization;
using Microsoft.AspNetCore.Authorization;

namespace HiSport.WebApi.Handler
{
    public class JwtHandler : AppAuthorizeHandler
    {


        /// <summary>
        /// 请求管道
        /// </summary>
        /// <param name="context"></param>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        public override Task<bool> PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)
        {
            // 此处已经自动验证 Jwt token的有效性了，无需手动验证

            // 检查权限，如果方法是异步的就不用 Task.FromResult 包裹，直接使用 async/await 即可

            return Task.FromResult(CheckAuthorzie(httpContext));
            // 检查权限，如果方法时异步的就不用 Task.FromResult 包裹，直接使用 async/await 即可
            return Task.FromResult(true);
        }

        /// <summary>
        /// 检查权限
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        private static bool CheckAuthorzie(DefaultHttpContext httpContext)
        {
            //// 获取权限特性
            //var securityDefineAttribute = httpContext.GetMetadata<SecurityDefineAttribute>();
            //if (securityDefineAttribute == null) return true;

            return true;
            //  //1.租户用户合法性验证（会频繁传查询数据库  可用缓存时在开启）
            //var userAuthentication= App.GetService<IAuthService>().UserAuthentication(new User()
            //{
            //    Account = CurrentUser.Account,
            //    TenantId = CurrentUser.TenantId,
            //    Id = CurrentUser.UserId,

            //}).Result;
            //return userAuthentication.IsSuccess;

            ///"查询数据库返回是否有权限"
        }


    }
}
